import time
from . import ConnPG
import psycopg2
from sanic.log import logger

class SpuAttributeTable:

    async def add_spu_attribute(self,spu_id, attribute_key, attribute_value):#添加spu属性

        #参数检查
        if not all([spu_id, attribute_key, attribute_value]) or not spu_id.isdecimal():

            return {
                'status': -1,
                'errorCode': 109100,
                'errorMsg': '请检查参数合法性，',
                'resultBody': None
            }

        spu_id = int(spu_id)

        check_sql = "select * from spu_attribute WHERE spu_id=%s and attribute_key=%s and attribute_value=%s;"

        check_result = await ConnPG().fetchone(check_sql, (spu_id, attribute_key, attribute_value))

        if check_result != None:

            return {

                'status': -1,
                'errorCode': 109101,
                'errorMsg': '添加的spu属性已经存在',
                'resultBody': None,
            }
         

        sql = 'INSERT INTO spu_attribute(spu_id, attribute_key, attribute_value) VALUES (%s, %s, %s)'

        await ConnPG().execute(sql, (spu_id, attribute_key, attribute_value))

        return {
            'status': 1,
            'errorCode': None,
            'errorMsg': None,
            'resultBody': "SPU添加成功",
        }
    async def select_attribute(self, spu_id):#查看指定sup_id的属性

        sql = 'select * from spu_attribute where spu_id=%s order by attribute_key'
        # sql = 'select * from spu_attribute where spu_id=%s'

        result = await ConnPG().fetchall(sql, (spu_id,))

        return {
            'status': 1,
            'errorCode': None,
            'errorMsg': None,
            'resultBody': result,
        }

    async def del_spu_attribute(self, spu_attribute_id):#删除spu_attribute

        #参数检查

        if not spu_attribute_id or not spu_attribute_id.isdecimal:

            return {
                'status': -1,
                'errorCode': 109100,
                'errorMsg': 'spu_attribute_id不能为空且为整数类型',
                'resultBody': None
            }

        sql = 'DELETE FROM spu_attribute WHERE id=%s'

        try:
            await ConnPG().execute(sql, (spu_attribute_id,))
        except psycopg2.errors.ForeignKeyViolation as e:

            # print(e)

            return {

                'status': -1,
                'errorCode': 109112,
                'errorMsg': str(e),
                'resultBody': None,
            }
        else:
        
            return {
                'status': 1,
                'errorCode': None,
                'errorMsg': None,
                'resultBody': "spu_attribute删除成功",                                     
            }

    async def update_spu_attribute(self, spu_attribute_id, spu_attribute_key, spu_attribute_value):#更新库房名称

        #参数检查
        if not all([spu_attribute_id, spu_attribute_key, spu_attribute_value]) or not spu_attribute_id.isdecimal():


            return {
                'status': -1,
                'errorCode': 109100,
                'errorMsg': '接口有三个必传参数且spu_attribute_id为整数',
                'resultBody': None
            }

        sql = "UPDATE spu_attribute SET attribute_key=%s, attribute_value=%s WHERE id=%s"


        await ConnPG().execute(sql, (spu_attribute_key, spu_attribute_value,spu_attribute_id))

    
        return {
            'status': 1,
            'errorCode': None,
            'errorMsg': None,
            'resultBody': "spu_attribute修改成功",
        }
    

